411 research outputs found

    Generic parsing combinators

    Get PDF
    Parsing combinators are a well known technique to the functional programming com munity Several de nitions of them were proposed and each one has its own advantages From the programmer point of view this wide range of possibilities implies that she needs to mantain several di erent modules with several di erent namespaces but all aimed to solve the same problem Type classes and constructor classes were introduced in Functional Programming as a mean to provide overloading that is sharing of names between functions of di erent types Several design decisions can be made when implementing class systems In particular multi parameter type classes is a di cult feature to add and its addition makes sense only if extra expressiveness is achieved with them This paper proposes the use of the class system extended with multi parameter type classes to unify the de nition of parsing combinators The advantage is that di erent solutions can share their interfaces thus simplifying the programmer s activity She uses this common interface and the actual implementation is decided only changing the type signature Moreover this use of the class system is an example of the usefulness of multi parameter type classesEje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    Generic parsing combinators

    Get PDF
    Parsing combinators are a well known technique to the functional programming com munity Several de nitions of them were proposed and each one has its own advantages From the programmer point of view this wide range of possibilities implies that she needs to mantain several di erent modules with several di erent namespaces but all aimed to solve the same problem Type classes and constructor classes were introduced in Functional Programming as a mean to provide overloading that is sharing of names between functions of di erent types Several design decisions can be made when implementing class systems In particular multi parameter type classes is a di cult feature to add and its addition makes sense only if extra expressiveness is achieved with them This paper proposes the use of the class system extended with multi parameter type classes to unify the de nition of parsing combinators The advantage is that di erent solutions can share their interfaces thus simplifying the programmer s activity She uses this common interface and the actual implementation is decided only changing the type signature Moreover this use of the class system is an example of the usefulness of multi parameter type classesEje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    "Forks without philosophers" o de cómo la cuantificación universal perdió una batalla y de las ventajas que ello reportó

    Get PDF
    En sentido general, este trabajo trata sobre la construcción formal de programas. La necesidad de construir los programas formalmente ha sido ampliamente discutida a lo largo de los últimos años, y ha adquirido una importancia cada vez mayor. En los comienzos, la programación se realizaba de una forma intuitiva, casi se podría decir artística; con el correr de los años se comprobó que los métodos utilizados eran inadecuados, por lo que se desarrollaron nuevas técnicas, mediante las cuales un programa debía ser diseñado al mismo tiempo que la prueba de su corrección. Quizás la mejor metáfora para describir la necesidad de formalidad es la que D’Argenio describe en el prefacio de su tesis de grado, donde compara a los programas con moscas, y a los métodos formales con una máquina mata-moscas; si los programadores utilizasen sus zapatos para aplastar las moscas (no utilizando los métodos formales, sino la intuición), sucedería lo que se cita en el epígrafe. Es por ello que se hace tanto hincapié en la investigación de métodos que permitan un tratamiento formal del proceso de desarrollo de software, o bien para la construcción, o bien para la especificación y verificación. En esta tesis utilizaremos un método de construcción que consiste en realizar transformaciones sobre una especificación hasta obtener un programa que la satisfaga.Tesis digitalizada en SEDICI gracias a la colaboración de la Biblioteca de la Facultad de Informática.Facultad de Ciencias Exacta

    Hierarchical N-body simulations in haskell

    Get PDF
    Functional Programming was historically considered a toy for re searchers but recent developments in the eld show that its area of ap plication is wider The Hierarchical N Body method is an iterative method used in as trophysics to simulate the gravitational evolution of collisionless matter in order to understand the formation of galaxies In this work functional programming is used as a tool for the descrip tion and prototipation of the Hierarchical N Body method in an attempt to show that it is a suited tool for expressing problems mantaining a good understanding of them and allowing a great degree of abstraction and generalization and with a reasonable e ciency for a prototype .Eje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    "Forks without philosophers" o de cómo la cuantificación universal perdió una batalla y de las ventajas que ello reportó

    Get PDF
    En sentido general, este trabajo trata sobre la construcción formal de programas. La necesidad de construir los programas formalmente ha sido ampliamente discutida a lo largo de los últimos años, y ha adquirido una importancia cada vez mayor. En los comienzos, la programación se realizaba de una forma intuitiva, casi se podría decir artística; con el correr de los años se comprobó que los métodos utilizados eran inadecuados, por lo que se desarrollaron nuevas técnicas, mediante las cuales un programa debía ser diseñado al mismo tiempo que la prueba de su corrección. Quizás la mejor metáfora para describir la necesidad de formalidad es la que D’Argenio describe en el prefacio de su tesis de grado, donde compara a los programas con moscas, y a los métodos formales con una máquina mata-moscas; si los programadores utilizasen sus zapatos para aplastar las moscas (no utilizando los métodos formales, sino la intuición), sucedería lo que se cita en el epígrafe. Es por ello que se hace tanto hincapié en la investigación de métodos que permitan un tratamiento formal del proceso de desarrollo de software, o bien para la construcción, o bien para la especificación y verificación. En esta tesis utilizaremos un método de construcción que consiste en realizar transformaciones sobre una especificación hasta obtener un programa que la satisfaga.Tesis digitalizada en SEDICI gracias a la colaboración de la Biblioteca de la Facultad de Informática.Facultad de Ciencias Exacta

    A functional programming approach to a computational biology problem

    Get PDF
    Protein Folding is an important open problem in the eld of Computational Biology Due to its com binatorial nature exact polynomial algorithms to solve it could not exist and so approximation algorithms and heuristics has to be used In this paper a new heuristic is studied based on the approach that considers that the folding process is coded into the protein One important aspect of this work is that the algorithm was implemented using functional programming resulting in advantages for the understanding of the problem The results obtained are comparable with the ones obtained for classical algorithms .Eje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    Tagging, encoding, and jones optimality

    Get PDF
    A partial evaluator is said to be Jones-optimal if the result of specializing a self-interpreter with respect to a source program is textually identical to the source program, modulo renaming. Jones optimality has already been obtained if the self-interpreter is untyped. If the selfinterpreter is typed, however, residual programs are cluttered with type tags. To obtain the original source program, these tags must be removed.; ; A number of sophisticated solutions have already been proposed. We observe, however, that with a simple representation shift, ordinary partial evaluation is already Jones-optimal, modulo an encoding. The representation shift amounts to reading the type tags as constructors for higherorder abstract syntax. We substantiate our observation by considering a typed self-interpreter whose input syntax is higher-order. Specializing this interpreter with respect to a source program yields a residual program that is textually identical to the source program, modulo renaming.Publicado en Basic Research in Computer Science, April, 2003.Laboratorio de Investigación y Formación en Informática Avanzad

    Mecanismos de sincronización en programación funcional concurrente

    Get PDF
    Muchas aplicaciones y o algoritmos se expresan de manera más sencilla utilizando lenguajes con estructuras o primitivas de concurrencia. En este tipo de problemas es necesaria la presencia y manipulación de variables o estructuras de estados las cuales se utilizan como mecanismos de sincronización y comunicación entre los procesos Los semáforos son herramientas utilizadas para solucionar problemas de secciones críticas e implementar protocolos de sincronización en programación concurrente Los lenguajes funcionales son her ramientas propicias para expresar paralelismo Concurrent Haskell es una extensión concurrente del lenguaje funcional puro y lazy Haskell. En este trabajo se presentan varias implementaciones de semáforos en Concurrent Haskell y se propone una generalización de las técnicas y mecanismos de sincronización y comunicación de procesos utilizando funciones de alto orden como así también la posibilidad de expresar nuevas estructuras de manipulación de concurrencia como tipo de datos abstractos Un punto importante es estudiar la posibilidad de utilizar lógicas aptas para la concurrencia en la verificación de programas funcionales concurrentes De esta manera se muestra que la programación funcional presenta una alternativa para el desarrollo de aplicaciones concurrentes .Eje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI
    corecore